Syntax10.Scn.Fnt MODULE Fonts; (* mf 15.3.93 *) IMPORT SYS:=SYSTEM, Macintosh, Display; Name*= ARRAY 32 OF CHAR; Font*= POINTER TO FontDesc; FontDesc*= RECORD name*: Name; height*, minX*, maxX*, minY*, maxY*: INTEGER; raster*: Display.Font; next: Font END; Default*: Font; defaultName: ARRAY 32 OF CHAR; PROCEDURE This*(name: ARRAY OF CHAR): Font; VAR fnt: Font; map: Macintosh.FontMapRealPtr; fntNum, fntSize, fntFace: INTEGER; BEGIN fnt:=Default; LOOP IF fnt=NIL THEN EXIT ELSIF fnt.name=name THEN RETURN fnt ELSE fnt:=fnt.next END END; Macintosh.GetFontInfo(name, fntNum, fntSize, fntFace); IF fntNum=0 THEN RETURN Default END; map:=SYS.VAL (Macintosh.FontMapRealPtr, Macintosh.NewFontMap(fntNum, fntSize, fntFace)); NEW(fnt); COPY(name, fnt.name); fnt.raster:=SYS.VAL(Display.Font, map); fnt.height:=map.height; fnt.maxX:=map.widMax; fnt.minY:=map.ndescent; fnt.maxY:=map.ascent; IF Default # NIL THEN fnt.next:=Default.next; Default.next:=fnt END; RETURN fnt END This; BEGIN Macintosh.GetPar("Fonts.DefaultFontName", defaultName); Default:=This(defaultName) END Fonts.